package cn.com.huzo.repository.trade;

import cn.com.huzo.model.entities.trade.ShippingOrderLinesEntity;
import huzofw.repository.GenericRepository;
import java.util.List;
import java.util.Map;

/**
 * 发货单明细数据访问对象接口。
 *
 * @author 吴旭
 */
public interface ShippingOrderLinesRepository extends GenericRepository<ShippingOrderLinesEntity, String> {

    /**
     * 根据ID取得发货单明细信息。
     *
     * @param headerId 发货单ID
     * @return 插入的数据主键
     */
    List<ShippingOrderLinesEntity> fetchByHeaderId(Long headerId);

    /**
     * 按款、发货地、颜色得到装箱数
     *
     * @param headerId
     * @return
     */
    List<Map<String, Object>> fetchCartonAmount(Long headerId);

    /**
     * 通过发令单标识引入发货单明细信息。
     *
     * @param headerId 发货单标识
     * @param assortedColourFlag 混色标记
     * @param assortedSizeFlag 混码标记
     * @param newNoPerDestinationFlag 按发货地重新编号标记
     * @param newNoPerColourFlag 发色重新编号标记
     */
    void caclCartonNo(Long headerId, Boolean assortedColourFlag, Boolean assortedSizeFlag,
            Boolean newNoPerDestinationFlag, Boolean newNoPerColourFlag);

    /**
     * 删除明细为了同步引入的发货发令单
     *
     * @param headerId 发货单主表标识
     * @return
     */
    Integer deleteByHeaderId(Long headerId);

    /**
     * 得到得到尺码节点
     *
     * @param headerId 发货单主表标识
     * @return
     */
    List<String> fetchSizeNameNode(Long headerId);

    /**
     * 根据ID取得发货单明细打印格式数据。
     *
     * @param headerId 发货单ID
     * @return 插入的数据主键
     */
    List<ShippingOrderLinesEntity> fetchPrintData(Long headerId);

    /**
     * 根据ID取得发货单明细打印格式2数据。
     *
     * @param headerId 发货单ID
     * @return 插入的数据主键
     */
    List<ShippingOrderLinesEntity> fetchPrintData02(Long headerId);

    /**
     * 根据ID取得发货单明细打印格式2数据。
     *
     * @param headerId 发货单ID
     * @return 插入的数据主键
     */
    List<ShippingOrderLinesEntity> fetchPrintData03(Long headerId);

    /**
     * 取得发货明细的特殊说明（例如样品数，不发货原因等）
     *
     * @param headerId 发货单ID
     * @return 发货明细的特殊说明
     */
    List<ShippingOrderLinesEntity> fetchLinesDesc(Long headerId);
}
